package org.pupil.search;

/**
 * @Description:
 * @Author: pupil
 * @Date: 2024/08/01 下午 3:13
 */
public class ISearch {

    /**
     * 得到一个随机数组，长度是n
     *
     * @param n 数组长度
     * @param v 数组值的范围
     * @return 生成的随机数组
     */
    public static int[] randomArray(int n, int v) {
        int[] arr = new int[n];
        for (int i = 0; i < n; i++) {
            // Math.random() -> double -> [0,1)一个小数，0.37463473126、0.00123126
            // Math.random() * v -> double -> [0,v)一个小数，依然等概率
            // (int) ((Math.random() * v) -> int -> 0 1 2 3 ... v-1，等概率的！
            // (int) ((Math.random() * v) + 1 -> int -> 1 2 3 4 ... v，等概率的！
            arr[i] = (int) (Math.random() * v) + 1;
        }
        return arr;
    }

    /**
     * 克隆数组，生成新的数组
     *
     * @param arr 数组
     * @return 克隆的数组
     */
    public static int[] copyArray(int[] arr) {
        int n = arr.length;
        int[] ans = new int[n];

        for (int i = 0; i < n; i++) {
            ans[i] = arr[i];
        }
        return ans;
    }

    /**
     * 验证两个数组是否相等
     * @param arr1 数组1
     * @param arr2 数组2
     * @return
     */
    public static boolean sameArray(int[] arr1, int[] arr2) {
        int n = arr1.length;
        for (int i = 0; i < n; i++) {
            if(arr1[i] != arr2[i]){
                return false;
            }
        }
        return true;
    }

    /**
     * 验证算法的结果是否正确, 保证数组有序
     *
     * @param sortedArr
     * @param num
     * @return
     */
    public static boolean right(int[] sortedArr, int num) {
        for (int cur : sortedArr) {
            if (cur == num) {
                return true;
            }
        }
        return false;
    }
}
